package com.breeze.blockchain.common.exception;

import com.breeze.components.core.exception.error.ErrorCodeInterface;
import lombok.AllArgsConstructor;

/**
 * 业务错误码集合
 *
 * @author breeze
 */
@AllArgsConstructor
public enum BizErrorCode implements ErrorCodeInterface {

  /**
   * 10000~99999 为业务逻辑 错误码 （无代码异常，代码正常流转，并返回提示给用户） 1XX01 XX是代表模块的意思 比如10101 01是Permission模块
   * 错误码的命名最好以模块为开头 比如 NOT_ALLOWED_TO_OPERATE前面加上PERMISSION = PERMISSION_NOT_ALLOWED_TO_OPERATE
   */
  // user admin
  UNDEFINED_LOGIN_TYPE(20001, "未知的登陆类型:{}"),
  LOGIN_ERROR(20002, "登陆失败，请重试"),
  USER_NOT_FOUND_ERROR(20003, "用户不存在，请重试"),
  USERNAME_OR_PASS_ERROR(20004, "用户名或密码错误，请重试"),
  USERNAME_EMPTY(20005, "用户名不能为空"),
  PASSWORD_EMPTY(20006, "密码不能为空"),
  USER_STATUS_LOCK_ERROR(20007, "用户已被禁用,请联系管理员"),
  USER_STATUS_FREEZE_ERROR(20008, "用户已被冻结,请联系管理员"),
  USER_STATUS_ERROR(20009, "用户状态异常,请联系管理员"),
  USER_ROLE_NOT_EXIST(20010, "用户角色不存在"),
  USER_ROLE_DISABLE(20011, "用户角色已禁用"),
  LOGIN_WRONG_USER_PASSWORD(20012, "用户密码错误，请重输"),
  USERNAME_MOBILE_EMAIL_EXIST(20013, "用户名手机号或邮箱已存在"),
  ASSIGN_PERMISSION_ERROR(20014, "分配权限失败,请重试"),
  USER_STATUS_DISABLED(20015, "当前账号{}已被封禁,{}秒后解封"),
  ;

  private final int code;
  private final String msg;

  @Override
  public int code() {
    return this.code;
  }

  @Override
  public String message() {
    return this.msg;
  }
}
